package com.freemaster.sys.entity;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.apache.shiro.util.CollectionUtils;


public class Role implements Serializable {

	private Long id ;//编号
	private String role ;//角色表示 程序中判断使用，如"admin"
	private String description ;//角色描述，UI界面显示使用
	private List<Long> resourceIds;//拥有的资源
	private Boolean available = Boolean.FALSE;//是否可用，如果不可用将不会添加给用户
	
	
	
	public Role() {
		super();
		// TODO Auto-generated constructor stub
	}



	public Role(Long id, String role, String description,   Boolean available) {
		super();
		this.id = id;
		this.role = role;
		this.description = description;
		this.available = available;
	}



	public Long getId() {
		return id;
	}



	public String getRole() {
		return role;
	}



	public String getDescription() {
		return description;
	}



	public List<Long> getResourceIds() {
		if(resourceIds ==null){
			resourceIds = new ArrayList<Long>();
		}
		return resourceIds;
	}


	public String getResourceIdsStr(){
		if(CollectionUtils.isEmpty(resourceIds)){
			return "";
		}
		StringBuilder s = new StringBuilder();
		for (Long resourceId : resourceIds) {
			s.append(resourceId);
			s.append(",");
		}
		return s.toString();
	}
	
	public void setResourceIdsStr(String resourceIdsStr){
		if(StringUtils.isEmpty(resourceIdsStr)){
			return ;
		}
		String [] resourceIdStrs = resourceIdsStr.split(",");
		for (String resourceIdStr : resourceIdStrs) {
			if (StringUtils.isEmpty(resourceIdStr)) {
				continue;
			}
			getResourceIds().add(Long.valueOf(resourceIdStr));
		}
	}

	public Boolean getAvailable() {
		return available;
	}



	public void setId(Long id) {
		this.id = id;
	}



	public void setRole(String role) {
		this.role = role;
	}



	public void setDescription(String description) {
		this.description = description;
	}



	public void setResourceIds(List<Long> resourceIds) {
		this.resourceIds = resourceIds;
	}



	public void setAvailable(Boolean available) {
		this.available = available;
	}
	
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Role role = (Role) o;

        if (id != null ? !id.equals(role.id) : role.id != null) return false;

        return true;
    }

    @Override
    public int hashCode() {
        return id != null ? id.hashCode() : 0;
    }



	@Override
	public String toString() {
		return "Role [id=" + id + ", role=" + role + ", description=" + description + ", resourceIds=" + resourceIds
				+ ", available=" + available + "]";
	}
    
    
}
